package cn.gan.loveofsoul.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * @Description:
 * @Author: ganwh
 * @Since: 2023/10/13 16:15
 */
public class CodeGenerator {
    public static void main(String[] args) {
        // ================= 需要修改的配置 =================

        // 数据源配置
        String jdbcUrl = "jdbc:mysql://localhost:3306/love_of_soul";
        String jdbcDriver = "com.mysql.cj.jdbc.Driver";
        String jdbcUsername = "root";
        String jdbcPassword = "Gwh0921.";

        FastAutoGenerator.create(jdbcUrl, jdbcUsername, jdbcPassword)
                .globalConfig(builder -> {
                    builder.author("ganwh") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("C:\\myProjects\\codeGenerator"); // 指定输出目录
                })
//                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
//                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
//                    if (typeCode == Types.SMALLINT) {
//                        // 自定义类型转换
//                        return DbColumnType.INTEGER;
//                    }
//                    return typeRegistry.getColumnType(metaInfo);
//
//                }))
                .packageConfig(builder -> {
                    builder.parent("cn.gan.loveofsoul") // 设置父包名
//                            .moduleName("system") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "C:\\myProjects\\codeGenerator")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
//                    builder.addInclude("canteen", "commemorate_day", "food", "food_classification", "photo", "photo_album", "photo_upload_record", "relationship"); // 设置需要生成的表名
//                    builder.addInclude("sys_config"); // 设置需要生成的表名
                    builder.addInclude("photo_file"); // 设置需要生成的表名
//                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
